package com.ruoyi.campus.mapper;


import com.ruoyi.campus.domain.PatrolPoint;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 巡查点位信息Mapper接口
 * 
 * @author ruoyi
 * @date 2025-06-29
 */
public interface PatrolPointMapper 
{
    /**
     * 查询巡查点位信息
     * 
     * @param pointId 巡查点位信息主键
     * @return 巡查点位信息
     */
    public PatrolPoint selectPatrolPointByPointId(Long pointId);

    /**
     * 根据点位唯一编码查询巡查点位信息
     * 
     * @param pointUniqueCode 点位唯一编码
     * @return 巡查点位信息
     */
    public PatrolPoint selectPatrolPointByUniqueCode(@Param("pointUniqueCode") String pointUniqueCode);

    /**
     * 查询巡查点位信息列表
     * 
     * @param patrolPoint 巡查点位信息
     * @return 巡查点位信息集合
     */
    public List<PatrolPoint> selectPatrolPointList(PatrolPoint patrolPoint);

    /**
     * 新增巡查点位信息
     * 
     * @param patrolPoint 巡查点位信息
     * @return 结果
     */
    public int insertPatrolPoint(PatrolPoint patrolPoint);

    /**
     * 修改巡查点位信息
     * 
     * @param patrolPoint 巡查点位信息
     * @return 结果
     */
    public int updatePatrolPoint(PatrolPoint patrolPoint);

    /**
     * 删除巡查点位信息
     * 
     * @param pointId 巡查点位信息主键
     * @return 结果
     */
    public int deletePatrolPointByPointId(Long pointId);
    
    /**
     * 解绑巡查点位的安全员
     * 
     * @param pointId 巡查点位ID
     * @param updateBy 更新人
     * @return 结果
     */
    public int unbindGuardFromPoint(@Param("pointId") Long pointId, @Param("updateBy") String updateBy);

    /**
     * 批量删除巡查点位信息
     * 
     * @param pointIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deletePatrolPointByPointIds(String[] pointIds);

    /**
     * 校验点位编码是否唯一
     *
     * @param pointUniqueCode 点位唯一编码
     * @param pointId 点位ID
     * @return 结果
     */
    public PatrolPoint checkPointCodeUnique(@Param("pointUniqueCode") String pointUniqueCode, @Param("pointId") Long pointId);

    /**
     * 根据二维码code查询点位信息
     *
     * @param qrCode 二维码code
     * @return 点位信息
     */
    public PatrolPoint selectPatrolPointByQrCode(@Param("qrCode") String qrCode);

    

    /**
     * 根据安全员姓名和手机号查询安全员ID
     *
     * @param guardName 安全员姓名
     * @param phoneNumber 手机号
     * @return 安全员ID
     */
    public Long selectGuardIdByNameAndPhone(@Param("guardName") String guardName, @Param("phoneNumber") String phoneNumber);
}
